package cn.com.cpic.insurance.rulecheck.core;

/**
 * Business Object Model 上下文，从这个上下文中可获得所有与BOM相关的信息
 * 
 * @author 代波
 * @since 2011-8-20
 */
public interface BomContext extends Iterable<Object> {
	/**
	 * 往上下文中增加新的BOM对象
	 * 
	 * @param key 新增BOM的key
	 * @param value BOM
	 * @return 如果key有旧值，则返回旧值对应的BOM，否则返回null
	 */
	Object addBom(Object key, Object value);

	/**
	 * 从上下文中移除BOM
	 * 
	 * @param key 待移除的BOM的key
	 * @return 待移除的BOM，如果没有key对应的BOM，则返回null
	 */
	Object removeBom(Object key);

	/**
	 * 从上下文中获取key对应的BOM
	 * 
	 * @param key 待获取的BOM的key
	 * @return key对应的BOM，如果没有key对应的BOM，则返回null
	 */
	Object getBom(Object key);

	/**
	 * 判断上下文中是否含有key对应的BOM
	 * 
	 * @param key BOM的key
	 * @return 如果有key对应的BOM，返回true，否则返回false
	 */
	boolean containsBom(Object key);
}
